// axios的配置写在这里

import Vue from 'vue'
import axios from 'axios'
// 获取token
import {getToken,removeToken} from '@/utils/token'
// 默认导出
import router from '@/router'

// 配置基准路径
axios.defaults.baseURL = process.env.VUE_APP_BASEURL
// 因为我们现在的后台需要携带过去cookies，所以需要设置下允许携带cookies，不是每个后台都需要的
axios.defaults.withCredentials=true 

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  if(response.data.code == 206){
    // token已经过期
    // 这里不能使用this.$router ,  这里不是单文件组件
    // this.$router.push('/login')
    // 解决  在上面已经默认导入router 这里就可以直接点出来
    router.push(`/login?t=${new Date() -0}`)  // 加时间戳 这样随便修改token或者token过期 跳转到登录页面的时候，控制台就不会报错，原因是又一次访问了login页面 就会提示

    // token过期 干嘛还要保存呢？ 按需导入把token移除
  removeToken()
  }
  return response.data;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  const token = getToken()
  if(token){
    config.headers.token = token 
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 挂载到vue原型
Vue.prototype.$axios = axios